mscJNeuralNet.netPerformanceStatistics
Class NetPerformanceReporter

java.lang.Object
  extended bymscJNeuralNet.netPerformanceStatistics.NetPerformanceReporter

public class NetPerformanceReporter
extends java.lang.Object

Diese Klasse dient der Erzeugung eines Berichtes über die berechneten Ist-Soll Fehlerwerte eines Netzes. Außerdem steht eine Methode zur Verfügung, um ein Netz mehrfach von Grund auf zu trainieren, um Statistiken über die Performanz der gewählten Parameter des Netzes und des Lernverfahrens zu ermitteln.

Beispiel zum Testen der verschiedenen Lernverfahren und ihrer Performanz auf dem dreidimensionalen Xor-Problem. Es wird mit jedem Lernverfahren jeweils hundert mal trainiert, wobei vor jedem Training die Kantengewichte erneut initialisiert werden. Bei jedem Durchgang wird entweder bis zu einem avg. SSE Wert von 0.01 oder bis 50 Lernschritte absolviert wurden trainiert.

 // Lerndatensätze erzeugen 
 double [][] trippleXORtrainInput = {
           {-1,-1,-1}, {-1,-1,1},
           {-1,1,-1}, {-1,1,1},
           {1,-1,-1}, {1,-1,1},
           {1,1,-1}, {1,1,1}};
 double [][] trippleXORtrainOutput = {
           {-1},{1},
           {1},{-1},
           {1}, {-1},
           {-1}, {1}};
 // Netzstruktur festlegen
 int [] layerSizesTrippleXOr = {3, 3, 1};
 
 // Parameter für das Lernverfahren BackpropagationMomentum
 // alpha, momentum
 double [] momentum_1_bpg = {0.3, 0.4}; // best performance on tripplexor
 
 // Parameter für das Lernverfahren SuperSABMomentum
 // momentum, alphaplus, alphaminus, alphainit
 double [] momentum_1_ssab = {0.0};
 
 // Parameter für das Lernverfahren QuickProp
 // alpha, max growth rate
 double [] momentum_1_qprop = {0.3};
 
 // Das zu traininerende Netz
 Net lTrippleXorNet = new Net(layerSizesTrippleXOr);
 
 // Die verschiedenen Lernverfahren
 INetTrainingAlgorithm lAlgoBpgMom = new BackpropagationMomentum();
 INetTrainingAlgorithm lAlgoSSAB = new SuperSABMomentum();
 INetTrainingAlgorithm lAlgoRProp = new RProp();
 INetTrainingAlgorithm lAlgoQProp = new QuickProp();
 
 // Kantengewichtsinitialisierer
 INetConnector lSymmNetConnector = new RandomSymmetryBreakingNetConnector();

 try{
   // Parameter für Bpg festlegen
   lAlgoBpgMom.setLearningParameters(momentum_1_bpg);
   // Bpg hundert mal mit jeweils maximal 50 Lernschritten trainieren
   NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoBpgMom, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
   
   // Parameter für SuperSAB festlegen
   lAlgoSSAB.setLearningParameters(momentum_1_ssab);
   // SuperSAB hundert mal mit jeweils maximal 50 Lernschritten trainieren
   NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoSSAB, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
 
   // RProp hundert mal mit jeweils maximal 50 Lernschritten trainieren
   NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoRProp, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
   
   // Parameter für QProp festlegen
   lAlgoQProp.setLearningParameters(momentum_1_qprop);
   // QProp hundert mal mit jeweils maximal 50 Lernschritten trainieren
   NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoQProp, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
 }
 catch (Exception e){
   e.printStackTrace();
 }
 

Created on 31.05.2004

Version:
13.06.2004
Author:
M. Serhat Cinar
See Also:
NetPerformanceStatistics, NetPerformanceStatisticsCalculator, mscJNeuralNet.netPerformanceStatistics

Constructor Summary
NetPerformanceReporter()
           
 
Method Summary
static java.lang.String getNetPerformance(NetPerformanceStatistics pNetStat, int pLearningCycle)
          Generiert einen Bericht über die Performanz eines Netzes.
static void getQualityReport(Net pNet, INetTrainingAlgorithm pAlgo, double[][] pInputPattern, double[][] pOutputPattern, int pRoundsToTest, int pMaxCycles, double[] pConnectorParameters, INetConnector pNetConnectionAlgo)
          Ein Netz wird mehrfach von Grund auf trainiert, um Statistiken über die Performanz der gewählten Parameter des Netzes und des Lernverfahrens zu ermitteln.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NetPerformanceReporter

public NetPerformanceReporter()
Method Detail

getQualityReport

public static void getQualityReport(Net pNet,
                                    INetTrainingAlgorithm pAlgo,
                                    double[][] pInputPattern,
                                    double[][] pOutputPattern,
                                    int pRoundsToTest,
                                    int pMaxCycles,
                                    double[] pConnectorParameters,
                                    INetConnector pNetConnectionAlgo)
                             throws PatternDoesNotMatchNetException
Ein Netz wird mehrfach von Grund auf trainiert, um Statistiken über die Performanz der gewählten Parameter des Netzes und des Lernverfahrens zu ermitteln. Es wird mit dem gegebenen Lernverfahren jeweils die angegebene Anzahle mal trainiert, wobei vor jedem Training die Kantengewichte mit dem Konnektor erneut initialisiert werden. Bei jedem Durchgang wird entweder bis zu einem avg. SSE Wert von 0.01 oder bis die angegebene Anzahl der Lernschritte absolviert wurden trainiert. Nach jedem Aufruf wird ein Bericht ausgegeben.

Parameters:
pNet - Das Netz, welches zu testen ist.
pAlgo - Das zu benutzende Lernverfahren.
pInputPattern - Die Eingabemuster für das Training.
pOutputPattern - Die Ausgabemuster für das Training (Soll-Werte).
pRoundsToTest - Anzahl der Testdurchläufe.
pMaxCycles - Anzahl der maximalen Lernschritte pro Testdurchlauf.
pConnectorParameters - Parameter für den INetConnector.
pNetConnectionAlgo - Der Kantengewichtsinitialisierungsalgorithmus.
Throws:
PatternDoesNotMatchNetException - Falls eines der gegebenen Lerndatensätze nicht der Eingabe-/ Ausgabeschichtgröße des Netzes entspricht.

getNetPerformance

public static java.lang.String getNetPerformance(NetPerformanceStatistics pNetStat,
                                                 int pLearningCycle)
Generiert einen Bericht über die Performanz eines Netzes. Der Bericht zeigt die durchschnittlichen Fehlerwerte auf den Lerndatensätzen sowie den absoluten Fehler für jedes Ausgabeneuron (Ist-Wert) zu den Ausgabemustern (Soll-Wert).
Die erste Zeile des Berichtes enthält Informationen über die durchschnittliche Performaz des Netzes auf allen Lernverfahren:
 avg.ABSE:0.03 / avg.SSE:0 / avg.RMSE:0.01 / max. Neuron AbsE:0.03 @[Lernschritt]
 

Für jeden Lerndatensatz wird im Bericht eine eigene Zeile produziert.
Das Muster für jede Zeile hat die Form:

 Pattern [pattern number]  
 [output pattern value]=[netoutput] AbsE:[absolute neuron error]
 

Der Auszug unten ist ein Bericht über ein Netz mit drei Ausgabeneuronen, welches mit 16 Lerndatensätzen trainiert wurde.

 avg.ABSE:0.03 / avg.SSE:0 / avg.RMSE:0.01 / max. Neuron AbsE:0.03 @377
 Pattern 0
 0.6=0.61 (AbsE:0.01)  0.1=0.08 (AbsE:0.02)  0.2=0.2 (AbsE:0)  
 Pattern 1
 0.7=0.69 (AbsE:0.01)  0.1=0.11 (AbsE:0.01)  0.2=0.2 (AbsE:0)  
 Pattern 2
 0.1=0.11 (AbsE:0.01)  0.2=0.18 (AbsE:0.02)  0.2=0.19 (AbsE:0.01)  
 Pattern 3
 0.1=0.1 (AbsE:0)  0.2=0.19 (AbsE:0.01)  0.2=0.19 (AbsE:0.01)  
 Pattern 4
 0.7=0.67 (AbsE:0.03)  0.1=0.09 (AbsE:0.01)  0.2=0.2 (AbsE:0)  
 Pattern 5
 0.6=0.61 (AbsE:0.01)  0.1=0.1 (AbsE:0)  0.2=0.2 (AbsE:0)  
 Pattern 6
 0.5=0.49 (AbsE:0.01)  0.1=0.09 (AbsE:0.01)  0.2=0.19 (AbsE:0.01)  
 Pattern 7
 0.4=0.4 (AbsE:0)  0.1=0.11 (AbsE:0.01)  0.2=0.22 (AbsE:0.02)  
 Pattern 8
 0.3=0.27 (AbsE:0.03)  0.1=0.12 (AbsE:0.02)  0.2=0.21 (AbsE:0.01)  
 Pattern 9
 0.2=0.21 (AbsE:0.01)  0.1=0.09 (AbsE:0.01)  0.2=0.21 (AbsE:0.01)  
 Pattern 10
 0.1=0.12 (AbsE:0.02)  0.1=0.12 (AbsE:0.02)  0.2=0.2 (AbsE:0)  
 Pattern 11
 0.1=0.1 (AbsE:0)  0.1=0.1 (AbsE:0)  0.2=0.2 (AbsE:0)  
 Pattern 12
 0.2=0.2 (AbsE:0)  0.1=0.09 (AbsE:0.01)  0.2=0.2 (AbsE:0)  
 Pattern 13
 0.3=0.3 (AbsE:0)  0.1=0.11 (AbsE:0.01)  0.2=0.21 (AbsE:0.01)  
 Pattern 14
 0.4=0.4 (AbsE:0)  0.1=0.1 (AbsE:0)  0.2=0.19 (AbsE:0.01)  
 Pattern 15
 0.5=0.51 (AbsE:0.01)  0.1=0.1 (AbsE:0)  0.2=0.2 (AbsE:0)
 

Parameters:
pNetStat - Das NetPerformanceStatistics Objekt, zu dem der Bericht erstellt werden soll.
pLearningCycle - Der Lernschritt, zu dem das NetPerformanceStatistics Objekt generiert wurde.
Returns:
String, der den Bericht als formatierten Text enthält.